package com.inei.evaluacionmype.model.dao;

import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.inei.evaluacionmype.model.connection.UtilDB;
import com.inei.evaluacionmype.model.entity.Justificacion;

public class JustificacionDao implements ICRUD<Justificacion> {

	// variables
	private UtilDB util;
	private SQLiteDatabase db;
	private Cursor cursor = null;

	// constructor
	public JustificacionDao(Context context) {
		util = new UtilDB(context);
	}

	// metodos ICRUD
	@Override
	public Justificacion buscar(Justificacion o) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<Justificacion> leer() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public int crear(Justificacion o) {
		int resultado = 0;
		db = util.getWritableDatabase();
		db.beginTransaction();

		ContentValues valores = new ContentValues();
		valores.put("RUC", o.getRUC());
		valores.put("REGLA", o.getREGLA());
		valores.put("CAPITULO", o.getCAPITULO());
		valores.put("COLUMNA", o.getCOLUMNA());
		valores.put("CLAVE", o.getCLAVE());
		valores.put("FLAG", o.getFLAG());
		valores.put("DETALLE", o.getDETALLE());
		valores.put("USUCRE	", o.getUSUCRE());
		valores.put("FECCRE", o.getFECCRE());

		resultado = (int) db.insert("Justificacion", null, valores);
		if (resultado > 0) {
			db.setTransactionSuccessful();
		}

		valores.clear();
		Cerrar();
		return resultado;
	}

	@Override
	public int actualizar(Justificacion o) {
		int resultado = 0;
		db = util.getWritableDatabase();
		db.beginTransaction();

		ContentValues valores = new ContentValues();
		valores.put("REGLA", o.getREGLA());
		valores.put("COLUMNA", o.getCOLUMNA());
		valores.put("FLAG", o.getFLAG());
		valores.put("DETALLE", o.getDETALLE());
		valores.put("USUCRE	", o.getUSUCRE());
		valores.put("FECCRE", o.getFECCRE());

		resultado = (int) db.update("Justificacion", valores,
				"RUC=? and CAPITULO=? and CLAVE=?", new String[] {
						o.getRUC() + "", o.getCAPITULO() + "",
						o.getCLAVE() + "" });
		if (resultado > 0) {
			db.setTransactionSuccessful();
		}

		valores.clear();
		Cerrar();
		return resultado;
	}

	@Override
	public int eliminar(Justificacion o) {
		// TODO Auto-generated method stub
		return 0;
	}

	// otros metodos
	public List<Justificacion> leer(String ruc_id, String cap) {
		List<Justificacion> lista = null;
		db = util.getReadableDatabase();
		cursor = db.rawQuery(
				"select * from Justificacion where RUC=? and CAPITULO=?",
				new String[] { ruc_id + "", cap + "" });
		if (cursor.moveToFirst()) {
			lista = new ArrayList<Justificacion>();
			while (!cursor.isAfterLast()) {
				Justificacion obj = new Justificacion();
				obj.setRUC(cursor.getString(cursor.getColumnIndex("RUC")));
				obj.setREGLA(cursor.getString(cursor.getColumnIndex("REGLA")));
				obj.setCAPITULO(cursor.getString(cursor
						.getColumnIndex("CAPITULO")));
				obj.setCOLUMNA(cursor.getString(cursor
						.getColumnIndex("COLUMNA")));
				obj.setCLAVE(cursor.getString(cursor.getColumnIndex("CLAVE")));
				obj.setFLAG(cursor.getString(cursor.getColumnIndex("FLAG")));
				obj.setDETALLE(cursor.getString(cursor
						.getColumnIndex("DETALLE")));
				obj.setUSUCRE(cursor.getString(cursor.getColumnIndex("USUCRE")));
				obj.setFECCRE(cursor.getString(cursor.getColumnIndex("FECCRE")));
				lista.add(obj);
				cursor.moveToNext();
			}
		}
		Cerrar();
		return lista;
	}

	private void Cerrar() {
		if (cursor != null) {
			cursor.close();
		}
		if (db.inTransaction()) {
			db.endTransaction();
		}
		if (db.isOpen()) {
			db.close();
		}
	}
}
